package com.fred.backjava.common;

import com.fred.backjava.exception.ErrorCode;

/**
 * @author Fred
 * @version 1.0
 * @date 2025/1/15 10:55
 */
public class ResultUtils {
    /**
     * 核心设计思想
     * 统一响应格式：所有接口返回 BaseResponse 对象，包含 code（状态码）、data（数据）、message（提示信息）
     *
     * 简化代码：通过静态方法快速创建成功/失败响应，避免重复写 new BaseResponse(...)
     */

    /**
     * 成功
     *
     * @param data 数据
     * @param <T>  数据类型
     * @return 响应
     */
    public static <T> BaseResponse<T> success(T data) {
        return new BaseResponse<>(0, data, "ok");
    }

    /**
     * 失败
     *
     * @param errorCode 错误码
     * @return 响应
     */
    public static BaseResponse<?> error(ErrorCode errorCode) {
        return new BaseResponse<>(errorCode);
    }

    /**
     * 失败
     *
     * @param code    错误码
     * @param message 错误信息
     * @return 响应
     */
    public static BaseResponse<?> error(int code, String message) {
        return new BaseResponse<>(code, null, message);
    }

    /**
     * 失败
     *
     * @param errorCode 错误码
     * @return 响应
     */
    public static BaseResponse<?> error(ErrorCode errorCode, String message) {
        return new BaseResponse<>(errorCode.getCode(), null, message);
    }
}
